如何在 Linux 命令行中运行 Bash Shell 脚本 | 您所在的位置:网站首页 › linux sh执行 › 如何在 Linux 命令行中运行 Bash Shell 脚本 |
如何在 Linux 命令行中运行 Bash Shell 脚本
运行 bash shell 脚本非常简单。但在本教程中,您还可以了解如何在 shell 而不是子 shell 中运行它们。 “当你可以尝试自动化 5 个小时的时候,永远不要花 5 分钟手工做某件事。” 这可能是讽刺,因为自动化可能比手动执行需要更长的时间,但自动化对于高级 Linux 用户来说是必要的。 Shell 脚本构成了 Linux 自动化的基础。 运行 bash shell 脚本的最简单方法是: bash path_to_script然而,更流行的方法是向脚本授予执行权限,然后像这样运行脚本: chmod u+x script.sh ./script.sh让我一步步详细解释这一点。 在 Ubuntu 中运行 Shell 脚本首先,让我们创建一个简单的 bash 脚本。我将创建一个有用的 bash 脚本来显示可用的磁盘空间和 RAM: #!/bin/bash # Script that shows the available disk space and memory # Disk space echo -e "FREE DISK SPACE" df -h /dev/sda # Memory (RAM) echo -e "\nFREE MEMORY" free -h # Process ID or PID echo -e "\nPID = $$"该脚本打印可用磁盘空间(在 /dev/sda 中)、内存和 shell 的进程 ID。我将其另存为“freespace.sh”。 要执行此脚本,您应该为其授予执行权限,这可以使用 chmod 命令来完成。语法是: chmod +x shell_script.sh📋如果您不在脚本所在的目录中,请确保键入脚本文件的绝对路径。这里,我给系统中的所有用户授予了执行这个脚本的执行权限。这就是 +x 标签的含义。 ls -l 命令列出文件的属性,包括权限。 您还可以使用u+x,它只向您授予执行权限。 最后,通过以下语法执行脚本: ./shell_script.sh是的,这是执行 shell 脚本的一种简单方法。这适用于所有需要在不调用解释器的情况下执行的脚本! 您可以在此处阅读有关 Linux 中文件权限的更多信息。 或者,使用口译员每种脚本语言都有一个解释器,它直接执行脚本文件中的每一行。如果脚本文件中存在错误,则执行将在该特定行处停止(在执行前面的行之后)。 要使用解释器执行脚本,我们不需要更改文件的权限。 对于 shell 脚本,您可以调用您正在使用的 shell。由于我使用的是 bash 并且编写了 bash 脚本,因此我将调用 sh 或 bash。 要执行脚本,您可以使用解释器调用它。 bash ./shell_script.sh或者 sh ./shell_script.sh您可以在此处键入相对路径或绝对路径。 使用source命令在当前shell中运行脚本默认情况下,shell 脚本在子 shell 中运行。有时,您可能想在同一个 shell 中运行脚本。这就是 source 命令的用武之地。 使用此命令,您可以将某些内容包含到同一个 shell 中。这主要用于更新对 bashrc 等文件所做的更改,而无需退出 shell。 您也可以用它执行脚本,如下所示: source ./shell_script.sh变量 $$ 可用于查找您正在使用的当前 shell 的进程 ID。这就是上面所示的示例脚本中所做的事情。 请注意,脚本和父 shell 的进程 ID (PID) 相同,这意味着脚本在同一个 shell 中运行,而不是在新的子 shell 中运行。 点运算符(.)在同一个 shell 而不是子 shell 中执行脚本的另一种方法 点 (.) 代表您正在使用的 shell,后面跟着您想要执行的脚本。 . ./shell_script.sh额外提示:在执行时调试脚本使用解释器方法,您可以查看执行了哪些命令,调试脚本中的错误,并找到执行失败的部分。 为此,您可以使用详细模式 (-v) 或 xtrace 模式 (-x) 来查看正在执行哪些语句。 详细模式显示各个命令执行之间的整个脚本。您可以看一下下面的图片以供参考。 Xtrace模式用于跟踪脚本中每个命令的执行情况。这里的 + 符号显示执行之前的命令(而 ++ 用于描述“执行”命令)。 包起来我希望您喜欢这个关于执行 bash 脚本的基本但重要的教程。 如果您不熟悉 Bash 脚本编写,我们为您准备了十章的 Bash 初学者系列。 如果您有疑问或建议,请告诉我。 |
CopyRight 2018-2019 实验室设备网 版权所有 |